In order to extend the functionality of existing applications several techniques have been proposed that allow an end-user to create a new control for the application user-interface. The user actions associated with the new control may be scripted by the user through a special-purpose scripting language within the application.
An application that permits control configuration in an existing application can be utilized by third-party developers, and can be provided as a package to be installed at the discretion of an end-user. For example, the GOOGLE (GOOGLE is a trademark of Google Inc.) search engine uses a toolbar having a set of controls, specified in the JAVASCRIPT language (JAVASCRIPT is a trademark of Sun Microsystems, Inc.), that invokes extension mechanisms within browsers, such as INTERNET EXPLORER (INTERNET EXPLORER is a trademark of Microsoft Corp.) or NETSCAPE (NETSCAPE is a trademark of Netscape Communications). If the user chooses to install the toolbar into the browser, the JAVASCRIPT language creates a new set of controls within an existing toolbar of the browser or hosting application.
There also exist application programs that install controls within other applications. An example of such a control is the Watson system developed at Northwestern University. As part of its installation, Watson adds new controls to several other application programs, including INTERNET EXPLORER and MICROSOFT WORD (MICROSOFT WORD is a trademark of Microsoft Corp.). These controls are configured by the Watson developers and are added only to a small set of known programs. The developers of Watson have explicitly coded the actions that are to be associated with each control.
While the above mentioned approaches introduce the ability to extend the functionality of existing applications, they fail to provide a methodology that allows for the installation of any new or modified control into any existing application to suit a specific user. Thus, a need exists for an improved system for customizing a new or existing user interface control in an application.